package 贪心andDp;

import java.util.Arrays;
import java.util.Scanner;

public class _05区间覆盖问题 {
    /**
     * 农夫约翰正在分配他的两万五千头牛在谷仓周围做一些清洁工作。
     * 他总是希望有一头牛在清理东西，并将一天分为T班（1<=T<=1000000），
     * 第一个是1档，最后一个是T档。
     * 每头牛只能在白天的某些时间间隔内进行清洁工作。
     * 任何被选为清洁工作的母牛都将在整个间隔时间内工作。
     * 你的工作是帮助农夫约翰分配一些奶牛轮班，以便（i）每个轮班至少分配一头奶牛，
     * （ii）尽可能少的奶牛参与清洁。如果无法为每个班次分配一头奶牛，请打印-1。
     * 输入
     * 第1行：两个空格分隔的整数：N和T
     * 第2行。。N+1：每行包含奶牛工作时间间隔的开始和结束时间。
     * 奶牛在开始时间开始工作，在结束时间后结束工作。
     * 输出
     * 第1行：农夫约翰需要雇佣的奶牛的最小数量，如果不能为每个班次分配一头奶牛，则为-1。
     * 样本输入
     * 3 10
     * 1 7
     * 3 6
     * 6 10
     * 样本输出
     * 2
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int T = sc.nextInt();
        Job[] jobs = new Job[N];
        for (int i = 0; i < N; i++) {
            jobs[i] = new Job(sc.nextInt(), sc.nextInt());
        }
        Arrays.sort(jobs);
        int start = 1;
        int end = 1;
        int count = 1;
        for (int i = 0; i < N; i++) {
            int s = jobs[i].s;
            int t = jobs[i].t;
            if (i == 0 && s > 1) break;
            if (s <= start) {
                end = Math.max(t, end);
            } else {
                count++;  //上一个目标已经覆盖，计数加一
                start = end + 1;  //更新起点，下一个覆盖目标的起点
                if (s <= start) {
                    end = Math.max(t, end);
                } else {
                    break;
                }
            }
            if (end >= T) {  //当前end超越了线段目标的右端点 可以结束
                break;
            }
        }
        if (end < T)
            System.out.println(-1);
        else
            System.out.println(count);
    }

    public static class Job implements Comparable<Job> {
        int s;
        int t;

        public Job(int s, int t) {
            this.s = s;
            this.t = t;
        }

        @Override
        public int compareTo(Job o) {
            int x = this.s - o.s;
            if (x == 0) {
                return this.t - o.t;
            } else {
                return x;
            }
        }
    }
}
